Getting the accuracy for multi-label prediction in scikit-learn
sklearn.metrics.accuracy_score only computes the subset accuracy (3): i.e. the set of labels predicted for a sample must exactly match the corresponding set of labels in y_true.
「accuracy_scoreは部分集合のaccuracyを計算するだけ」
「すなわち、サンプルに予測されたラベルの集合は厳密に対応するy_trueのラベルの集合にマッチしなければならない」
code:accuracy.py
>> import numpy as np
>> from sklearn import metrics
>> y_true = np.array(0,1,0],0,1,1,1,0,1,[0,0,1) >> y_pred = np.array(0,1,1],0,1,1,0,1,0,[0,0,0) # index=1の0,1,1のみ正解と一致 >> metrics.accuracy_score(y_true, y_pred) # デフォルトでnormalize=True, sample_weight=None
0.25 # 1/4
code:hamming_loss.py
>> metrics.hamming_loss(y_true, y_pred)
0.4166666666666667
Hamming scoreの実装あり
リンクされている論文
(3)のaccuracyは(1)ではexact match ratio
accuracyの定義:共通部分の要素数 / 和集合の要素数
accuracyの定義:共通部分の要素数 / 和集合の要素数
computes the subset accurary
Hamming score
論文を参照して:(1)や(2)のaccuracyと同じものと思われる
Hamming scoreはaccuracyを意味するので、大きいほうがいいはず